iT邦幫忙

2025 iThome 鐵人賽

DAY 18
0
自我挑戰組

從零開始的AI學習之路:非本科轉職的30天挑戰記系列 第 18

D18 | 我的Side Project 每拍呷--LINE BOT篇

  • 分享至 

  • xImage
  •  

今日原訂進度4/14:
創建一個 Messaging API channel。在 LINE Developers 後台設定 BOT 的基本資訊,並取得 Channel Access Token 和 Channel Secret。設定 Webhook URL (使用 ngrok 暫時將本地開發環境映射到公開網路)。撰寫基於 Python Flask 或 FastAPI 的簡單後端程式,使其能接收 LINE 傳來的文字訊息,並回覆「哈囉!」等基本文字。


先講結論,我覺得Gemini的Gem實在是太好用了,今天的進度大超前(已經把原本接下來三天的進度做完)/images/emoticon/emoticon07.gif
雖然今天進度超前,不過花了總時數五個小時,其實LINE BOT很快就設定完成,最大卡關是在無法傳送音檔給用戶...

今天最終完成的進度為:

  1. 讓用戶手動輸入生理性別、身高、體重、吃的食品份量(1代表吃了整包、0.5為半包、0.25為1/4包,這個部分不太直覺,會再優化!),並上傳營養標示圖片。
    LINE BOT能根據用戶提供的內容正確計算出數據、用生成式AI製作個人化建議與鼓勵,最終回傳這樣的分析內容:

https://ithelp.ithome.com.tw/upload/images/20250823/20177974lSXFaLKWnn.jpg
https://ithelp.ithome.com.tw/upload/images/20250823/20177974iCUGckY5mh.jpg

  1. 成功使用Azure TTS服務生成語音檔,但無法傳送給用戶,只能在我的本地端下載

  2. 在程式碼中,加入呼叫生成式 AI (Gemini) 的邏輯,以便產生個人化建議與鼓勵給用戶。
    這個是跟Gem討論過後的新發現~而且取得Gemini API Key步驟很簡單:

  • 前往 Google AI Studio。
  • 登入你的 Google 帳號。
  • 點擊左側導覽列的「Get API key」或「Create API key in new project」來生成Gemini API 金鑰。
    (有免費額度就是香!)

過程

先請Gemini生成一張LINE BOT大頭貼,我覺得蠻符合也蠻可愛的:
https://ithelp.ithome.com.tw/upload/images/20250823/20177974noVeG44pae.png

串Messaging API、設定ngrok、VS CODE執行都還蠻順利的,
只是因為程式碼是從昨天的GRADIO版本去調整的,所以一直出現BUG,
譬如:沒設定到1份蛋白質相當於1顆雞蛋、漏掉了讓用戶輸入吃的食品份量、計算時誤用了模擬數據而非用戶上傳的營養標示圖片...等等。

經過了數十次的修修改改,最後終於數字計算都正確了!
程式碼從之前的209行來到了879行...但交給Gemini Debug速度很快,大幅提升效率。

然後今天的最大改變是捨棄了長條圖!
長條圖不知道為什麼看起來就莫名令人煩躁,於是我提出用emoji代替的方案,
把最多的成份往前排,例如這包洋芋片的鈉最多,那麼鈉就排第一個,其他就隨機往後排。

判斷標準:

蛋白質:1 顆雞蛋 (🥚) = 6克 蛋白質
脂肪:1茶匙的油(🧈) = 5克 脂肪
糖:1顆方糖(🍬) = 5克 糖
鈉:1 克鹽 (🧂) = 400mg 鈉
碳水化合物:1 碗160g的飯 (🍚) = 60克 碳水化合物

我希望最後的輸出是有相對應數量的emoji:

您好!營養組成如下圖:
🧂🧂🧂🍚🍚🥚🧈🍬
碳水化合物:120克,相當於兩碗白飯🍚🍚
蛋白質:6克,相當於一顆蛋🥚
脂肪:5克,相當於一茶匙油🧈
鈉:1200毫克,相當於3公克鹽巴🧂🧂🧂
糖:5克,相當於一顆方糖🍬

BUT最後生成的結果多了很多星號,明天再來修正!
至於語音檔只能存在我的本地端、無法傳送給用戶的問題,也是明天再來修正!
目前試了七次皆失敗,Gemini覺得是ngrok的問題,每次都傳這個建議給我:

請更新 NGROK_PUBLIC_URL:
重新啟動 ngrok,並從其終端機視窗中複製最新的 HTTPS 公開 URL (例如:https://xxxx-xxxx-xxxx-xxxx.ngrok-free.app)。
在 app.py 檔案中,找到這行:
Python YOUR_NGROK_URL = '請在這裡貼上你的 ngrok HTTPS 公開 URL'
將 '請在這裡貼上你的 ngrok HTTPS 公開 URL' 替換成你剛剛複製的 實際 ngrok HTTPS URL。
注意:每次 ngrok 重啟,這個 URL 都會改變,因此你需要重複此步驟。

但但但!我已經重新換過ngrok的URL了,還是不行,所以我覺得問題應該是躲在其他地方,今日五小時的折騰已累🤣

明天進度就專心處理讓語音檔成功傳給用戶吧!必要的話好像就要用到雲端儲存服務了...
這個部份還沒接觸過,那我就要再研究。

加油!!


上一篇
D17 | 我的Side Project每拍呷--研究Azure服務篇
下一篇
D19 | 我的Side Project 每拍呷--將音檔傳給用戶篇
系列文
從零開始的AI學習之路:非本科轉職的30天挑戰記30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言